
/**
 * Deze klasse is een subklasse van de persoonklasse. Deze klasse bevat specifieke gegevens en methodes
 * voor een personen-object.
 * 
 * @author Stephan Veenstra & Michel Jansma 
 * @version (2012.10.11)
 */
public class Student extends Person {

    //Definiëren van instantie variabelen van het type String
    private String studentenNummer, studieRichting;
    
    //Definiëren van klasse variabelen van het type int
    private static int COUNT = 1000; // ! Verhoog COUNT klasse variabele bij aanmaak van nieuwe student tbv. studentenNummer

    /**
     * @method Student
     * @params null
     * @info   Constructor van Student class, welke geen parameters meekrijgt
     * @return null
     */
    public Student() {
        //Call to super class
        super(307030, "Ben", "Berends", 'M', new int[]{ 18, 9, 1992 });
        //Initialiseer instantie variabele studentenNummer
        this.setStudentenNummer("student_" + COUNT++);
        //Initialiseer instantie variabele studieRichting
        this.setStudieRichting("Technische informatica");
    }

    /**
     * @method Student
     * @params <int> BSN, <String> firstname, <String> lastname, <char> gender, <int[]> dateOfBirth, <String> studieRichting
     * @info   Overloaded constructor van Student class
     * @return null
     */
    public Student(int BSN, String firstname, String lastname, char gender, int[]dateOfBirth, String studieRichting) {
        //Call to super class
        super(BSN, firstname, lastname, gender, dateOfBirth);
        //Initialiseer instantie variabele studentenNummer
        this.setStudentenNummer("student_" + COUNT++);
        //Initialiseer instantie variabele studieRichting
        this.setStudieRichting(studieRichting);
    }
    
    /**
     * Set de studentenNummer
     * @param studentenNummer
     * @return null
     */
    public void setStudentenNummer(String studentenNummer)
    {
        this.studentenNummer = studentenNummer;
    }
    
    /**
     * Set de studieRichting
     * @param studieRichting
     * @return null
     */
    public void setStudieRichting(String studieRichting)
    {
        this.studieRichting = studieRichting;
    }
    
    /**
     * GET de studentenNummer van deze student.
     * @return studentenNummer
     */
    public String getStudentenNummer()
    {
        return this.studentenNummer;
    }
    
    /**
     * GET de studieRichting van deze student.
     * @return studieRichting
     */
    public String getStudieRichting()
    {
        return this.studieRichting;
    }
    
    /**
     * @method toString
     * @params null
     * @info   toont een overzicht van alle data, welke is ingevoerd voor de persoon en de student
     * @return <String> data
     */
    @Override
    public String toString() {
        return super.toString() + (
            "Studentennummer : " + this.getStudentenNummer() + "\n" + 
            "StudieRichting  : " + this.getStudieRichting()
        );
    }
}
